package com.tedu.api.thread;

/**
 * 3.了解线程常用方法，结合Lambda
 * getPriority() 基本线程API 获取线程优先级：1~10默认·：5
 * setPriority() 常用线程API 设置线程优先级
 * 使用方法：setPriority(1~10) 数值越大，线程执行优先级别越高
 *         setPriority(Thread.Max_PRIORITY)
 *         thread线程类--提供常量：表示优先级：最大跟最小
 *     需求：创建三个线程---Lambda---Thread线程
 *          每个线程中实现for循环：1000次
 *                         老大一声吼，地球抖三抖 max
 *                         老二一出手，蚊子全飞走 normal
 *                         老三一张口，笑倒一群牛 min
 *
 * 总结：线程优先级：优先级数值越大，几率越高，而不是最终结果
 * 结论：三个线程，同时执行1000次输出语句【同时：并发】
 *      线程原则上可以指定优先级，不能主动获取cpu时间片，也不能决定
 *      时间片的长度，只能被动分配，指定优先级只是最大程度上改变cpu
 *      时间片获取线程几率！
 * 理论上：线程优先级越高，cpu时间片获取次数越高
 *
 */
public class Thread_Priority {
    public static void main(String[] args) {
        Thread max=new Thread(()->{
            for (int i=0;i<1000;i++){
                System.out.println("老大一声吼，地球抖三抖");
            }
        });

        Thread normal=new Thread(()->{
            for (int i=0;i<1000;i++){
                System.out.println("老二一出手，蚊子全飞走");
            }
        });

        Thread min=new Thread(()->{
            for (int i=0;i<1000;i++){
                System.out.println("老三一张口，笑倒一群牛");
            }
        });
        min.getPriority();//设置优先级:1 有几率最后执行
        max.setPriority(Thread.MAX_PRIORITY);//设置最大、最小优先级
    //启动线程
        min.start();//优先级：默认：5
        normal.start();//优先级：默认：5
        max.start();//优先级：默认：5


    }

}
